/*
 * 
 * 
 */

package steg.utils;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**
 *
 * @author
 */
public class StringZipper {


// ------------------------------- ZIENNE PRYWATNE -----------------------------
    //-- stałe
    //-- czy
    //-- zmienne

// ------------------------------- ZIENNE PUBLICZNE
    //-- czy
    //-- zmienne

// ------------------------------- KONSTRUKTORY
  /**
   * Klasa statyczna, no need.
   */
      private StringZipper()
      {
      }

// ******************************** PUBLICZNE **********************************
// *****************************************************************************
// ------------------------------- FUNKCJE KRYTYCZNE ---------------------------
    /**
     * Kompresuje String do GZIP.
     * @param input
     * @return
     * @throws java.io.IOException
     */
    public static byte[] zipStringToBytes(String input) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        BufferedOutputStream bufos = new BufferedOutputStream(new GZIPOutputStream(bos));
        bufos.write(input.getBytes());
        bufos.close();
        byte[] retval = bos.toByteArray();
        bos.close();
        return retval;
    }

      /**
       * Odzipowuje skompresowany String.
       *
       * @param bytes
       * @return
       * @throws java.io.IOException
       */
    public static String unzipStringFromBytes(byte[] bytes) throws IOException {
        ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
        BufferedInputStream bufis = new BufferedInputStream(new GZIPInputStream(bis));
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        int len;
        while ((len = bufis.read(buf)) > 0) {
            bos.write(buf, 0, len);
        }
        String retval = bos.toString();
        bis.close();
        bufis.close();
        bos.close();
        return retval;
    }
// ------------------------------- FUNKCJE DODATKOWE ---------------------------

// ------------------------------- FUNKCJE dziwne ------------------------------



// ******************************** PRYWATNE ***********************************
// *****************************************************************************
// ------------------------------- FUNKCJE KRYTYCZNE


// ------------------------------- FUNKCJE  POMOCNICZE CZY/SET -----------------


}
